1、安装数据库所需依赖包 1 2 3 4 5 yum install -y gcc* yum install -y glibc* yum install -y compat-libstdc++-33 elfutils-libelf-devel libaio-devel compat-libcap1 yum install -y sysstat yum install -y smartmontools
2、创建用户,并修改用户名密码 1 2 3 4 /usr/sbin/groupadd -g 505 oinstall /usr/sbin/groupadd -g 502 dba /usr/sbin/groupadd -g 503 oper /usr/sbin/useradd -u 506 -g oinstall -G dba,oper oracle
配置用户名密码
3、配置相关数据库目录权限 1 2 3 4 5 6 7 mkdir -p /data/u01/app/oracle chown oracle.oinstall -R /data/u01/app/oracle chmod 775 /data/u01/app/oracle mkdir -p /data/u01/app/oracle/product/11.2.0.4/dbhome_1/ chown oracle.oinstall -R /data/u01/app/oracle/product/11.2.0.4/dbhome_1/ chmod 775 /data/u01/app/oracle/product/11.2.0.4/dbhome_1/ chown oracle.oinstall -R /data/u01
4、修改系统参数: 4.1、关闭selinux
4.2、关闭防火墙
4.3、设置用户连接限制 cat /etc/security/limits.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft nofile 65536 oracle hard nofile 65536 oracle soft memlock 8088608 oracle hard memlock 8088608 oracle hard stack 10240 grid soft nproc 16384 grid hard nproc 16384 grid soft nofile 65536 grid hard nofile 65536 grid soft memlock 8088608 grid hard memlock 8088608 grid hard stack 10240
oracle用户最大能开启的进程数不超过16384,最大能打开的文件数不超过65536。至于soft和hard的区别,不同于磁盘配额中的软限制和硬限制。普通用户可以调整自己的softlimit但最高不能超过hardlimit,而且除了root以外的普通用户也不能够随意更改hard limit。该调整完成之后一般可以使用ulimit命令查看。 针对nofile,这个只是基于用户层面的限制和调整方法。基于系统层面的限制和调整方法是修改/etc/sysctl.conf文件,直接改fs.file-max参数,调整之后sysctl –p生效 memlock参数随着服务器内存不同,进行调整,该参数要偏小于实际的物理内存,本文以(8g内存为例)
4.4、为使/etc/security/limits.conf文件配置生效,需要确保pam模块pam_limits.so被加入到启动文件中: grep ‘pam_limits.so’ /etc/pam.d/login
1 session required pam_limits.so
pam_limits.so模块对用户使用系统资源的情况进行限制,也可以使用在对一般应用程序使用的资源限制方面。举例来说,如果需要在SSH服务器上对来自不同用户的ssh访问进行限制,就可以调用该模块来实现相关功能。例如,当需要限制用户admin登录到SSH服务器时的最大连接数(防止同一个用户开启过多的登录进程),就可以在/etc/pam.d/sshd 文件中增加一行对 pam_limits.so 模块的调用: 然后在/etc/security/limits.conf文件中增加一行对admin用户产生的连接数进行限定: admin hard maxlogins 2 完成之后重启服务器端的sshd服务。 之后我们可以看到,从客户端以admin身份登录SSH服务器时,在客户端上可以打开两个控制台登录。但当客户端开启第三个登录窗口的时候会被服务器拒绝,但其它用户不会受到限制。
4.5、设置用户最大进程数和进程可以打开的最大文件描述符的数量: cat /etc/profile
1 2 3 4 5 6 7 8 if [ $USER = "oracle" -o $USER = "grid" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
4.6、设置内核参数 cat /etc/sysctl.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 kernel.shmmax = 7730941132 kernel.shmall = 15586574 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 6815744 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 1048576 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 vm.min_free_kbytes = 524288 vm.swappiness = 60
使配置生效
安装过程中shmmax,shmall参数设置过小,导致dbca创建数据库的时候报错ORA-12547:TNS:lost contact 图形化安装,oracle有一个runfix脚本,调整这些参数,参考response下的文件,如果文件里面的参数小于参考文件的参数,会进行调整,如果文件参数大于参考文件参数,则不会进行调整。
SHMMAX应该比SGA区大,否则会引发性能的下降,shmmax 指的是单个共享内存段的最大尺寸, 设置shmmax=1G,sga分配了1.2G,当启动实例的时候就分配 2 块共享内存给Oracle
kernel.shmall=(SHMMAX/PAGE_SIZE):共享内存总量,以页为单位。Linux 共享内存页大小为4KB, 共享内 存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需 要共享内存页数是 16GB/4KB=16777216KB/4KB=4194304 (页),也就是64Bit 系统下 16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求
SHMMIN= 最小的内存段的大小
kernel.shmmni:共享内存段的最大数量,shmmni 缺省值 4096 ,一般肯定是够用了
kernel.sem(SEMMSL SEMMNS SEMOPM SEMMNI): SEMMSL,每个信号量集中的最大信号量数,应该设置为服务器中各个实例中PROCESSES参数的和+10;SEMMNS,系统中信号量的最大数,参数应设置为SEMMSL*SEMMNI。 SEMOPM,每个信号量调用所包含的最大操作数。 SEMMNI:系统中信号量集的最大数。 swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60
5、修改oracle用户环境变量 su - oracle vim ~/.bash_profile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH export THREADS_FLAG=native export ORACLE_BASE=/data/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1 export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:/usr/sbin export LD_LIBRARY_PATH=$ORACLE_HOME/lib export ORACLE_SID=boston export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export NLS_DATE_FORMAT="YYYY:MM:DD HH24:MI:SS" export EDITOR=vi set -o vi umask 022 alias bdump="cd $ORACLE_BASE/diag/rdbms/otcdb/${ORACLE_SID}/trace" alias sql='sqlplus "/ as sysdba"'
使环境变量生效
6、解压软件包,在database/response目录下找到db_install.rsp文件 编辑db_install.rsp文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 #选择安装类型:1.INSTALL_DB_SWONLY只装数据库软件 2.INSTALL_DB_AND_CONFIG安装数据库软件并建库 3.UPGRADE_DB升级数据库 oracle.install.option=INSTALL_DB_SWONLY #指定操作系统主机名,通过hostname命令获得 ORACLE_HOSTNAME=dax-mysql-slave #指定oracle inventory目录的所有者,通常会是oinstall或者dba UNIX_GROUP_NAME=oinstall #指定产品清单oracle inventory目录的路径,如果是Win平台下可以省略 INVENTORY_LOCATION=/data/u01/app/oracle/oraInventory #指定数据库语言,可以选择多个,用逗号隔开。选择en, zh_CN(英文和简体中文) SELECTED_LANGUAGES=en,zh_CN # Specify the complete path of the OracleHome.设置ORALCE_HOME的路径 ORACLE_HOME=/data/u01/app/oracle/product/11.2.0.4/dbhome_1 # Specify the complete path of the OracleBase. 设置ORALCE_BASE的路径 ORACLE_BASE=/data/u01/app/oracle #选择Oracle安装数据库软件的版本(企业版,标准版,标准版1),不同的版本功能不同 oracle.install.db.InstallEdition=EE #是否自定义Oracle的组件,如果选择false,则会使用默认的组件 #如果选择true否则需要自己在下面一条参数将要安装的组件一一列出。 #安装相应版权后会安装所有的组件,后期如果缺乏某个组件,再次安装会非常的麻烦。 oracle.install.db.EEOptionsSelection=false # oracle.install.db.EEOptionsSelection=true的话下面的安装组件会安装 oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0 #指定拥有OSDBA、OSOPER权限的用户组,通常会是dba组 oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oinstall #如果是RAC的安装,在这里指定所有的节点 oracle.install.db.CLUSTER_NODES= oracle.install.db.isRACOneInstall= oracle.install.db.isRACOneInstall= --------安装数据库选项 #选择数据库的用途,一般用途/事物处理,数据仓库 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE # Specify the Starter Database GlobalDatabase Name. 指定GlobalName oracle.install.db.config.starterdb.globalDBName=boston # Specify the Starter Database SID.指定SID oracle.install.db.config.starterdb.SID=boston #选择字符集。不正确的字符集会给数据显示和存储带来麻烦无数。 #通常中文选择的有ZHS16GBK简体中文库,建议选择unicode的AL32UTF8国际字符集 oracle.install.db.config.starterdb.characterSet=AL32UTF8 #11g的新特性自动内存管理,也就是SGA_TARGET和PAG_AGGREGATE_TARGET都#不用设置了,Oracle会自动调配两部分大小。 oracle.install.db.config.starterdb.memoryOption=true #指定Oracle自动管理内存的大小,最小是256MB oracle.install.db.config.starterdb.memoryLimit=5120 #是否载入模板示例 oracle.install.db.config.starterdb.installExampleSchemas=false # These settings may also be disabled. 是否启用安全设置 oracle.install.db.config.starterdb.enableSecuritySettings=true #设置数据库用户密码 oracle.install.db.config.starterdb.password.ALL=oracle #数据库本地管理工具DB_CONTROL,远程集中管理工具GRID_CONTROL oracle.install.db.config.starterdb.control=DB_CONTROL #.设置自动备份,和OUI里的自动备份一样。 oracle.install.db.config.starterdb.automatedBackup.enable=false #自动备份会启动一个job,指定启动JOB的系统用户ID oracle.install.db.config.starterdb.automatedBackup.osuid= #自动备份会开启一个job,需要指定OSUser的密码 oracle.install.db.config.starterdb.automatedBackup.ospwd= #自动备份,要求指定使用的文件系统存放数据库文件还是ASM oracle.install.db.config.starterdb.storageType= #使用文件系统存放数据库文件才需要指定数据文件、控制文件、Redo log的存放目录 oracle.install.db.config.starterdb.fileSystemStorage.dataLocation= #使用文件系统存放数据库文件才需要指定备份恢复目录 oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= #使用ASM存放数据库文件才需要指定存放的磁盘组 oracle.install.db.config.asm.diskGroup= #使用ASM存放数据库文件才需要指定ASM实例密码 oracle.install.db.config.asm.ASMSNMPPassword= #指定metalink账户用户名 MYORACLESUPPORT_USERNAME= # 指定metalink账户密码 MYORACLESUPPORT_PASSWORD= # 用户是否可以设置metalink密码 SECURITY_UPDATES_VIA_MYORACLESUPPORT= # False表示不需要设置安全更新,注意,在11.2的静默安装中疑似有一个BUG ******# Response File中必须指定为true,否则会提示错误,不管是否正确填写了邮件地址 DECLINE_SECURITY_UPDATES=true #代理服务器名 PROXY_HOST= #代理服务器端口 PROXY_PORT= #代理服务器用户名 PROXY_USER= #代理服务器密码 PROXY_PWD=
开始安装:
1 ./runInstaller -silent -responseFile /data/soft/database/response/db_install.rsp
如果是测试环境可能碰到下面的问题:
1 2 3 4 5 6 7 8 9 10 Checking swap space: 0 MB available, 150 MB required. Failed <<<< 解决方法: dd if=/dev/zero of=/data/swapfile bs=1M count=1024 mkswap /data/swapfile swapon /data/swapfile 在/etc/fstab添加下面内容 /data/swapfile swap swap defaults 0 0 >>>>> `
oracle安装到最后提示,使用root用户执行以下两个脚本:
1 2 /data/u01/app/oracle/oraInventory/orainstRoot.sh /data/u01/app/oracle/product/11.2.0.4/dbhome_1/root.sh
7、静默配置监听 通过response文件运行netca, 生成sqlnet.ora和listener.ora文件, 位于$ORACLE_HOME/network/admin目录下:
1 2 3 4 # su - oracle $ORACLE_HOME/bin/netca -silent -responsefile /data/soft/database/response/netca.rsp ll $ORACLE_HOME/network/admin/*.ora lsnrctl status
8、创建数据库 修改配置文件dbca.rsp
1 2 3 4 5 6 7 8 9 10 11 12 13 [GENERAL] RESPONSEFILE_VERSION = "11.2.0" OPERATION_TYPE = "createDatabase" [CREATEDATABASE] GDBNAME = "boston.us.oracle.com" TEMPLATENAME = "General_Purpose.dbc" SID = "boston" SYSPASSWORD = "oracle" SYSTEMPASSWORD = "oracle" SYSMANPASSWORD = "oracle" DBSNMPPASSWORD = "oracle" CHARACTERSET = "ZHS16GBK" TOTALMEMORY = "2048"
运行命令开始创建数据库:
1 dbca -silent -createDatabase -responseFile /data/soft/database/response/createdbca.rsp
如果不适用配置文件,也可使用下面命令直接指定参数:
1 ##dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc -gdbName orcogg -sid orcogg -sysPassword oracle -systemPassword oracle -datafileDestination /u01/app/oradata/orcogg -characterSet GBK16 -TOTALMEMORY 2048
各参数含义如下: -silent 表示以静默方式安装 -responseFile 表示使用哪个响应文件,必需使用绝对路径 RESPONSEFILE_VERSION 响应文件模板的版本,该参数不要更改 OPERATION_TYPE 安装类型,该参数不要更改 GDBNAME 全局数据库名,点号前面默认是db_name,点号后面默认就是db_domain TEMPLATENAME 建库模板名,参考各模板定义:$ORACLE_HOME/assistants/dbca/templates/*.dbc CHARACTERSET 字符集,默认是WE8MSWIN1252 TOTALMEMORY 实例内存,默认是服务器物理内存的40%